import Vue from 'vue'
import App from './App.vue'
import router from './router'
 
//在vue实例之前设置拦截器, 弹窗要引入弹窗toast组件
import {Toast} from 'vant' 

//创建全局路由守卫befoerEach可以全局守卫
// to 目标路由
// from 从什么路由开始跳转
// 最后这个 next 其实是放行函数
router.beforeEach((to,from,next)=>{
  
  //路由权限验证方法一
  // if(to.path == '/personal' || to.path == '/edit'){
  //   if( localStorage.getItem('token') ){
  //     next()
  //   }else{
  //     Toast.fail('妲己邀您请先登录')
  //     setTimeout(()=>{
  //       router.push('/login')
  //     },1000)
  //   }
  // }else{
  //   next()
  // }

  //方法三  将需要权限的配置path或name存到变量中,路由请求时进行判断
  let paths = [
    'edit',
    'personal',
    'attention',
  ]
  //if(paths.indexOf(to.name) != -1){

  //方法二   在需要权限的页面路由配置是添加meta数据,在这里进行判断
  if(to.meta.define){
    const token = localStorage.getItem('token')
    if(token){
      next()
    }else{
      router.push('/login')
    }
  }else{
    next()
  }

})


// 1. 导入组件库
import Vant from 'vant'
// 2. 引入组件 css 文件
import 'vant/lib/index.css'
// 3. 注册 vant ui 组件库的标签
Vue.use(Vant)

import axios from "axios";
// 绑定到原型
Vue.prototype.$axios = axios;

//添加请求基准路径
axios.defaults.baseURL = 'http://127.0.0.1:3000'
//axios.defaults.baseURL = 'http://liangwei.tech:3000'

//添加axios响应拦截器,处理错误处理
axios.interceptors.response.use(res =>{
  //console.log(res);
  const {data} = res
  if(data.statusCode == '用户信息验证失败'){
    Toast.fail('用户信息校验失败，重新登录')
    localStorage.removeItem('token')
    localStorage.removeItem('userid')
    router.replace('/login')
  }
  return res
})

// 请求拦截器
axios.interceptors.request.use(config=>{
   if(localStorage.getItem('token') && !config.headers.Authorization){  //请求时拦截带上token
     config.headers.Authorization = 'Bearer ' + localStorage.getItem('token')
   }

   return config
})

//创建全局过滤器可全局使用，修复图片路径
Vue.filter('RepairUrl',function(oldurl){
  const att = /^http/
  if(att.test(oldurl)){
    return oldurl
  }else{
    return axios.defaults.baseURL + oldurl
  }
})


Vue.config.productionTip = false

new Vue({
  router,
  render: function (h) { return h(App) }
}).$mount('#app')
